import { http } from '@/utils/http'
/**
 * 添加收货地址: 请求体参数
 */
export interface PostMemberAddressData {
  /**
   * 详细地址
   */
  address: string
  /**
   * 地址标签,以英文逗号分割
   */
  addressTags?: string
  /**
   * 所在城市编码
   */
  cityCode: string
  /**
   * 联系方式
   */
  contact: string
  /**
   * 所在区/县编码
   */
  countyCode: string
  /**
   * 是否为默认，1为是，0为否
   */
  isDefault: number
  /**
   * 邮政编码
   */
  postalCode?: string
  /**
   * 所在省份编码
   */
  provinceCode: string
  /**
   * 收货人姓名
   */
  receiver: string
}

/**
 * 获取收货地址列表项
 */
export interface MemberAddressItem {
  /**
   * 详细地址
   */
  address: string
  /**
   * 地址标签，号分隔
   */
  addressTags: string
  /**
   * 所在城市编码
   */
  cityCode: string
  /**
   * 联系方式
   */
  contact: string
  /**
   * 所在区/县编码
   */
  countyCode: string
  /**
   * 完整行政区
   */
  fullLocation: string
  /**
   * 收货地址id
   */
  id: string
  /**
   * 是否为默认，1为是，0为否
   */
  isDefault: number
  /**
   * 邮政编码
   */
  postalCode: string
  /**
   * 所在省份编码
   */
  provinceCode: string
  /**
   * 收货人姓名
   */
  receiver: string
}

/**
 * 添加收货地址
 */
export function postMemberAddress(data: PostMemberAddressData) {
  return http({
    method: 'POST',
    url: '/member/address',
    data: data,
  })
}

/**
 * 获取收货地址列表
 */
export function getMemberAddress() {
  return http<MemberAddressItem[]>({
    method: 'GET',
    url: '/member/address',
  })
}

/**
 * 更新收货地址
 * @param id  收货地址 id
 * @param data 收货地址请求体参数
 */
export function putMemberAddress(id: string, data: PostMemberAddressData) {
  // PS: 修改成功的返回值如果业务中没用，可以不指定类型
  return http({
    method: 'PUT',
    // 注意模板字符串 ${id} 的拼接
    url: `/member/address/${id}`,
    data: data,
  })
}

/**
 * 查询收货地址详情
 * @param id  收货地址 id
 * @param data 收货地址请求体参数
 */
export function getMemberAddressById(id: string) {
  // 注意：类型为单个收货地址，不要写成数组格式
  return http<MemberAddressItem>({
    method: 'GET',
    // 注意模板字符串 ${id} 的拼接
    url: `/member/address/${id}`,
  })
}

/**
 * 删除收货地址
 * @param id  收货地址 id
 */
export function deleteMemberAddressById(id: string) {
  // 注意：类型为单个收货地址，不要写成数组格式
  return http({
    method: 'DELETE',
    // 注意模板字符串 ${id} 的拼接
    url: `/member/address/${id}`,
  })
}
